<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      /* .hide {
        display: none;
      }
      div {
        cursor: pointer;
        border: 1px solid red;
        margin: 10px 0;
      } */
      * {
        margin: 0;
        padding: 0;
      }
      body {
        width: 100vh;
        height: 100vh;
        display: flex;
        justify-content: center;
        align-items: center;
        background: #34495e;
      }

      div {
        font-size: 3em;
        font-weight: bold;
        text-transform: uppercase;
        color: #9b59b5;
      }

      div > span {
        position: relative;
        display: inline-block;
        cursor: pointer;
      }

      .color {
        animation: color 1s 2 linear alternate;
      }

      @keyframes color {
        50% {
          color: #f1c40f;
          transform: scale(2);
        }
        to {
          color: #e74c3c;
          transform: scale(0.5);
        }
      }
    </style>
  </head>
  <body>
    <div>houdunren.com</div>
  </body>
</html>

<script>
  // const div = document.querySelectorAll("div"); // 不是数组

  // //   第一种方法
  // Array.from(div).map(function (item) {
  //   console.log(item);
  // });

  // //   第二种方法
  // //   Array.prototype.map.call(div, function (item) {
  // //     console.log(item);
  // //   });

  // //   第三种方法
  // [...div].map(function (item) {
  //   item.addEventListener("click", function () {
  //     this.classList.toggle("hide");
  //   });
  // });

  const div = document.querySelector("div");

  [...div.textContent].reduce(function (pre, cur, index) {
    pre == index && (div.innerHTML = "");
    let span = document.createElement("span");
    span.innerHTML = cur;
    div.appendChild(span);

    span.addEventListener("mouseover", function () {
      this.classList.add("color");
    });

    span.addEventListener("animationend", function () {
      this.classList.remove("color");
    });
  }, 0);
</script>
